﻿#region zh-CHS 2006 - 2010 DemoSoft 团队 | en 2006-2010 DemoSoft Team

//     NOTES
// ---------------
//
// This file is a part of the MMOSE(Massively Multiplayer Online Server Engine) for .NET.
//
//                              2006-2010 DemoSoft Team
//
//
// First Version : by H.Q.Cai - mailto:caihuanqing@hotmail.com

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU Lesser General Public License as published
 *   by the Free Software Foundation; either version 2.1 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

#region zh-CHS 包含名字空间 | en Include namespace
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Demo.Mmose.Core.Entity.Creature;
using Demo.Mmose.Core.Entity.GameObject;
using Demo.Mmose.Core.Entity.Character;
#endregion

namespace Demo.Mmose.Core.Entity.Suit.Quest
{
    /// <summary>
    /// 
    /// </summary>
    public class QuestActionHandler
    {
        /// <summary>
        /// 任务开始
        /// </summary>
        /// <param name="Quest"></param>
        public virtual void QuestStarted( Quest Quest )
        {

        }

        /// <summary>
        /// 任务结束
        /// </summary>
        /// <param name="Quest"></param>
        public virtual void QuestFinished( Quest Quest )
        {

        }

        /// <summary>
        /// 任务取消
        /// </summary>
        /// <param name="quest"></param>
        /// <param name="failed"></param>
        public virtual void QuestCancelled( Quest quest )
        {

        }

        /// <summary>
        /// 任务完成
        /// </summary>
        /// <param name="quest"></param>
        /// <param name="failed"></param>
        public virtual void QuestCompleted( Quest quest )
        {

        }

        /// <summary>
        /// 检查任务是否可用
        /// </summary>
        /// <param name="quest"></param>
        /// <param name="failed"></param>
        public virtual QuestInvalidReason CheckRequestQuest( Quest quest )
        {
            return (QuestInvalidReason)QuestInvalidReason.OK;
        }

        /// <summary>
        /// 检查可用任务的状态
        /// </summary>
        /// <param name="quest"></param>
        /// <param name="failed"></param>
        public virtual QuestStatus CheckActiveQuest( Quest quest )
        {
            return (QuestStatus)QuestStatus.NOT_AVAILABLE;
        }

        /// <summary>
        /// 检查任务是否有效
        /// </summary>
        /// <param name="quest"></param>
        /// <param name="failed"></param>
        public virtual bool CheckQuest( Quest quest )
        {
            return true;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="quest"></param>
        /// <param name="npc"></param>
        public virtual void NPCInteracted( Quest quest, CreatureBase npc )
        {

        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="quest"></param>
        /// <param name="gameObject"></param>
        public virtual void GameObjectInteraction( Quest quest, GameObjectBase gameObject )
        {

        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public virtual Quest CreateQuest()
        {
            return null;
        }

    }
}
#endregion